common.skill

ডেটাবেস মাইগ্রেশন (Database Migrations)

Microsoft Technologies - এএসপি ডট নেট কোর (ASP.Net Core)
237
237

ডেটাবেস মাইগ্রেশন হলো একটি পদ্ধতি, যা ডেটাবেস স্কিমাকে কোডের মাধ্যমে ভার্সন কন্ট্রোলে রাখতে সাহায্য করে। ASP.NET Core এ Entity Framework Core (EF Core) ব্যবহার করে মাইগ্রেশন তৈরি, আপডেট এবং পরিচালনা করা হয়। এটি ডেভেলপারদের ডেটাবেসের কাঠামো পরিবর্তন এবং নতুন ফিচার যোগ করতে সহজ করে তোলে।


ডেটাবেস মাইগ্রেশনের গুরুত্ব

  • কোড এবং ডেটাবেসের মধ্যে সামঞ্জস্য বজায় রাখা: ডাটাবেস পরিবর্তন সরাসরি কোডের মাধ্যমে পরিচালনা করা হয়।
  • টিম ওয়ার্ক সহজ করা: মাইগ্রেশন ব্যবস্থার মাধ্যমে একাধিক ডেভেলপার একই ডেটাবেস কাঠামো ব্যবহার করতে পারে।
  • রোলব্যাক ফিচার: প্রয়োজন হলে ডেটাবেস পরিবর্তন রোলব্যাক করা যায়।
  • স্বয়ংক্রিয় ডেটাবেস আপডেট: প্রোডাকশনে নতুন ডেটাবেস স্কিমা প্রয়োগ করতে সহজ হয়।

ASP.NET Core এ মাইগ্রেশন সেটআপ

Entity Framework Core ইন্সটল করা

ডেটাবেস মাইগ্রেশনের জন্য EF Core Tools প্রয়োজন। প্যাকেজ ইন্সটল করতে কমান্ড ব্যবহার করুন:

dotnet add package Microsoft.EntityFrameworkCore
dotnet add package Microsoft.EntityFrameworkCore.SqlServer
dotnet add package Microsoft.EntityFrameworkCore.Tools

DbContext ক্লাস তৈরি করা

DbContext হলো EF Core এর মূল উপাদান, যা ডেটাবেস এবং অ্যাপ্লিকেশন লজিকের মধ্যে ব্রিজ হিসাবে কাজ করে।

public class AppDbContext : DbContext
{
    public AppDbContext(DbContextOptions<AppDbContext> options) : base(options) { }

    public DbSet<Product> Products { get; set; }
}

DbContext রেজিস্টার করা

Startup.cs বা Program.cs ফাইলে DbContext রেজিস্টার করুন:

services.AddDbContext<AppDbContext>(options =>
    options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));

ডেটাবেস মডেল তৈরি করা

ডেটাবেস মডেলের জন্য একটি ক্লাস তৈরি করুন:

public class Product
{
    public int Id { get; set; }
    public string Name { get; set; }
    public decimal Price { get; set; }
}

ডেটাবেস মাইগ্রেশন তৈরি এবং পরিচালনা

মাইগ্রেশন তৈরি করা

ডেটাবেস মডেলের ভিত্তিতে প্রথম মাইগ্রেশন তৈরি করতে কমান্ড ব্যবহার করুন:

dotnet ef migrations add InitialCreate

এটি Migrations ফোল্ডারে মাইগ্রেশন ফাইল তৈরি করবে। উদাহরণ:

  • InitialCreate: মাইগ্রেশনের নাম।
  • তৈরি হওয়া ফাইলটি ডেটাবেস স্কিমার বিবরণ ধারণ করে।

মাইগ্রেশন অ্যাপ্লাই করা (ডেটাবেস তৈরি করা)

মাইগ্রেশন ডেটাবেসে অ্যাপ্লাই করতে নিম্নলিখিত কমান্ড দিন:

dotnet ef database update

এই কমান্ডটি ডেটাবেস তৈরি করে এবং মাইগ্রেশনে সংজ্ঞায়িত স্কিমা প্রয়োগ করে।


মাইগ্রেশন আপডেট করা

নতুন পরিবর্তন যোগ করা

মডেলে কোনো পরিবর্তন হলে নতুন মাইগ্রেশন তৈরি করুন। উদাহরণস্বরূপ, মডেলে একটি নতুন প্রোপার্টি যোগ করুন:

public class Product
{
    public int Id { get; set; }
    public string Name { get; set; }
    public decimal Price { get; set; }
    public string Category { get; set; } // নতুন প্রোপার্টি
}

নতুন মাইগ্রেশন তৈরি করুন:

dotnet ef migrations add AddCategoryToProduct

আপডেট ডেটাবেস

নতুন পরিবর্তন ডেটাবেসে অ্যাপ্লাই করতে:

dotnet ef database update

মাইগ্রেশন রোলব্যাক করা

ডেটাবেসকে আগের অবস্থায় ফিরিয়ে নিতে একটি নির্দিষ্ট মাইগ্রেশন পর্যন্ত রোলব্যাক করতে পারেন:

dotnet ef database update PreviousMigrationName

ডেটাবেসের সব মাইগ্রেশন মুছে ফেলতে:

dotnet ef migrations remove

ডেটা সিডিং (Seeding Data)

ডেটাবেসে ডিফল্ট ডেটা যোগ করার জন্য Data Seeding ব্যবহৃত হয়। এটি OnModelCreating মেথডের মাধ্যমে কনফিগার করা যায়:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<Product>().HasData(
        new Product { Id = 1, Name = "Laptop", Price = 1200, Category = "Electronics" },
        new Product { Id = 2, Name = "Phone", Price = 800, Category = "Electronics" }
    );
}

মাইগ্রেশন তৈরি এবং আপডেট করার পর এই ডেটা ডেটাবেসে যুক্ত হবে।


ডেটাবেস মাইগ্রেশনের সুবিধা

  • কোড এবং ডেটাবেসের মধ্যে সমন্বয় সহজ করা।
  • ডেটাবেস পরিবর্তন স্বয়ংক্রিয় করা।
  • রোলব্যাক এবং সংস্করণ নিয়ন্ত্রণ সহজ।
  • টিম ওয়ার্কে ডেটাবেস ব্যবস্থাপনা সুনিশ্চিত করা।

সারাংশ

ASP.NET Core এর Database Migrations ফিচার ডেভেলপারদের জন্য ডেটাবেস ব্যবস্থাপনায় একটি অত্যন্ত কার্যকরী এবং শক্তিশালী টুল। এটি কোডের মাধ্যমে ডেটাবেস পরিবর্তন পরিচালনা করে, যা ডেটাবেস আপডেট এবং মেইনটেনেন্সকে সহজ এবং স্বয়ংক্রিয় করে তোলে।

common.content_added_by

ডেটাবেস মাইগ্রেশন কী এবং কেন প্রয়োজন

188
188

ডেটাবেস মাইগ্রেশন হলো একটি প্রক্রিয়া, যার মাধ্যমে ডেটাবেসের স্কিমা (তথ্য কাঠামো) পরিবর্তন করা হয়, যাতে নতুন ফিচার বা আপডেট করা কার্যকারিতার জন্য ডেটাবেসের গঠন বা কনফিগারেশন সামঞ্জস্যপূর্ণ হয়। ASP.NET Core এর সাথে ব্যবহৃত Entity Framework Core (EF Core) এর মাধ্যমে এই মাইগ্রেশন কার্যক্রমটি পরিচালনা করা হয়। মাইগ্রেশন ব্যবহার করে ডেভেলপাররা ডেটাবেসে যে পরিবর্তন বা আপডেট করতে চান, সেগুলি স্বয়ংক্রিয়ভাবে বা ম্যানুয়ালি ডেটাবেসে প্রয়োগ করতে পারেন।


ডেটাবেস মাইগ্রেশন কীভাবে কাজ করে

মাইগ্রেশনটি মূলত একটি কোড-ভিত্তিক ডেটাবেস আপডেট ব্যবস্থা। যখন আপনি Entity Framework Core ব্যবহার করেন, তখন আপনার মডেলগুলিতে (যেমন DbContext বা মডেল ক্লাসে) পরিবর্তন আনলে EF Core মাইগ্রেশন টুল ব্যবহার করে এই পরিবর্তনগুলো ডেটাবেসে প্রয়োগ করা হয়। মাইগ্রেশন স্বয়ংক্রিয়ভাবে ডেটাবেসের স্কিমা পরিবর্তন করে যেমন নতুন টেবিল, কলাম যোগ করা, পূর্ববর্তী কলাম মুছে ফেলা বা প্রোপার্টি পরিবর্তন করা।


ডেটাবেস মাইগ্রেশন এর প্রয়োজনীয়তা

1. স্কিমা পরিবর্তন সুরক্ষিতভাবে পরিচালনা করা

ডেটাবেসের স্কিমা পরিবর্তন করতে হলে, ডেটাবেসে নতুন টেবিল বা কলাম যুক্ত করা, পুরনো টেবিল মুছে ফেলা বা তাদের নাম পরিবর্তন করা প্রয়োজন হতে পারে। মাইগ্রেশন এসব পরিবর্তন সঠিকভাবে এবং ব্যাকআপ সহ পরিচালনা করতে সাহায্য করে। মাইগ্রেশন আপনাকে নিরাপদে এই পরিবর্তনগুলো টেস্ট এবং প্রয়োগ করার সুযোগ দেয়।

2. কোড-বেস এবং ডেটাবেসের মধ্যে সিঙ্ক্রোনাইজেশন

যখন কোডবেসের মধ্যে পরিবর্তন করা হয়, তখন সেই পরিবর্তনগুলো ডেটাবেসে সিঙ্ক্রোনাইজ করতে মাইগ্রেশন প্রয়োজন হয়। আপনি যদি নতুন ফিচার বা মডেল তৈরি করেন, তাহলে ডেটাবেসেও সেই পরিবর্তনগুলো প্রয়োজন। মাইগ্রেশন এই পরিবর্তনগুলো সহজে ডেটাবেসে প্রয়োগ করতে সাহায্য করে, যাতে কোডবেস এবং ডেটাবেসের কাঠামো একসাথে সামঞ্জস্যপূর্ণ থাকে।

3. ডেটাবেস সংস্করণ কন্ট্রোল

মাইগ্রেশন ডেটাবেসের সংস্করণ কন্ট্রোল তৈরি করতে সাহায্য করে। এর মাধ্যমে আপনি দেখতে পারবেন কখন কোন পরিবর্তন করা হয়েছে এবং সেই পরিবর্তনগুলির পূর্ববর্তী অবস্থান কিভাবে ছিল। এটি টিম ডেভেলপমেন্টের ক্ষেত্রে গুরুত্বপূর্ণ, কারণ বিভিন্ন ডেভেলপার একসাথে কাজ করতে পারেন এবং প্রতিটি পরিবর্তনের ইতিহাস ট্র্যাক করা সম্ভব হয়।

4. ডেটাবেস রোলব্যাক এবং আপডেট করা

মাইগ্রেশন ব্যবহার করে আপনি ডেটাবেসের পরিবর্তন রোলব্যাকও করতে পারেন। যদি কোনো মাইগ্রেশন পরিবর্তন ঠিকভাবে না চলে বা কোনো সমস্যা সৃষ্টি করে, আপনি সহজেই পূর্ববর্তী মাইগ্রেশন স্টেটসে ফিরে যেতে পারবেন। মাইগ্রেশন আপনাকে পূর্বের অবস্থায় ফিরে আসার সুযোগ দেয়।

5. ইনক্রিমেন্টাল আপডেট

মাইগ্রেশনগুলো ইনক্রিমেন্টাল (ধাপে ধাপে) হয়। এতে ডেভেলপাররা ছোট ছোট পরিবর্তন করতে পারেন, যা ডেটাবেসের জন্য আরও নিরাপদ এবং ব্যবহারযোগ্য। একটি বড় আপডেটের পরিবর্তে ছোট ছোট মাইগ্রেশন গুলি সম্পাদন করা ভাল, যাতে সহজে সমস্যা চিহ্নিত এবং সমাধান করা যায়।


Entity Framework Core-এ মাইগ্রেশন কিভাবে কাজ করে

EF Core ডেভেলপারদের ডেটাবেসের স্কিমা পরিবর্তন পরিচালনার জন্য মাইগ্রেশন টুলস সরবরাহ করে। এটি কোড থেকে ডেটাবেসের মধ্যে পার্থক্য খুঁজে বের করে এবং সেই পার্থক্য ডেটাবেসে প্রয়োগ করে।

মাইগ্রেশন তৈরি করা

EF Core-এ মাইগ্রেশন তৈরি করতে CLI অথবা Package Manager Console (PMC) ব্যবহার করা যায়।

  1. CLI ব্যবহার করে:

    dotnet ef migrations add MigrationName
    
  2. PMC ব্যবহার করে:

    Add-Migration MigrationName
    

এখানে, MigrationName হলো আপনার মাইগ্রেশনের নাম, যা আপনি যে পরিবর্তন করেছেন তার উপর ভিত্তি করে নামকরণ করবেন।

মাইগ্রেশন প্রয়োগ করা

মাইগ্রেশন প্রয়োগ করতে:

  1. CLI ব্যবহার করে:

    dotnet ef database update
    
  2. PMC ব্যবহার করে:

    Update-Database
    

এই কমান্ডটি ডেটাবেসের স্কিমায় সমস্ত মাইগ্রেশন পরিবর্তন প্রয়োগ করবে।

মাইগ্রেশন রোলব্যাক

যদি আপনি পূর্ববর্তী মাইগ্রেশন স্টেটে ফিরে যেতে চান, তাহলে:

  1. CLI ব্যবহার করে:

    dotnet ef database update PreviousMigrationName
    
  2. PMC ব্যবহার করে:

    Update-Database PreviousMigrationName
    

ডেটাবেস মাইগ্রেশন এবং ডেভেলপমেন্ট টিম

ডেটাবেস মাইগ্রেশন টুলস ডেভেলপারদের মধ্যে সহযোগিতা সহজ করে। যখন একাধিক ডেভেলপার একসাথে কাজ করেন, মাইগ্রেশন তাদেরকে ডেটাবেসের স্কিমা পরিবর্তন সঠিকভাবে পরিচালনা করতে সহায়তা করে এবং তারা একে অপরের পরিবর্তন সমন্বয় করতে পারে।


সারাংশ

ডেটাবেস মাইগ্রেশন একটি অত্যন্ত গুরুত্বপূর্ণ প্রক্রিয়া, যা ডেটাবেসের স্কিমা পরিবর্তনকে সঠিকভাবে এবং নিরাপদে পরিচালনা করতে সাহায্য করে। এটি ডেভেলপারদের কোডবেস এবং ডেটাবেসের মধ্যে সিঙ্ক্রোনাইজেশন নিশ্চিত করতে, সংস্করণ কন্ট্রোল এবং রোলব্যাক সুবিধা প্রদান করে। Entity Framework Core ব্যবহার করে মাইগ্রেশন সহজভাবে তৈরি এবং প্রয়োগ করা যায়, যা ডেভেলপারদের জন্য সময় সাশ্রয়ী এবং কার্যকরী একটি পদ্ধতি।

common.content_added_by

প্রথম মাইগ্রেশন তৈরি করা

190
190

ASP.NET Core এ ডাটাবেস মাইগ্রেশন ব্যবহৃত হয় ডেটাবেসের স্কিমা আপডেট করতে, যা Entity Framework Core (EF Core) এর মাধ্যমে করা হয়। মাইগ্রেশন ব্যবহার করে আপনি আপনার মডেল ক্লাসের পরিবর্তনগুলিকে ডাটাবেসে প্রতিফলিত করতে পারেন। প্রথম মাইগ্রেশন তৈরি করার প্রক্রিয়াটি খুবই সহজ এবং কয়েকটি ধাপে করা যায়।


মাইগ্রেশন তৈরি করার পূর্বশর্ত

ডাটাবেস মাইগ্রেশন তৈরি করতে হলে প্রথমে আপনাকে কিছু পদক্ষেপ সম্পন্ন করতে হবে:

  1. Entity Framework Core ইন্সটল করা: আপনি যদি Entity Framework Core ব্যবহার করেন না, তবে প্রথমে এর প্যাকেজ ইনস্টল করতে হবে।
  2. DbContext তৈরি করা: আপনার ডাটাবেসের জন্য একটি DbContext ক্লাস তৈরি করতে হবে, যা ডাটাবেসের সঙ্গে যোগাযোগ করবে এবং আপনার মডেল ক্লাসগুলিকে সনাক্ত করবে।

1. Entity Framework Core প্যাকেজ ইনস্টল করা

প্রথমে, আপনাকে Entity Framework Core-এর প্রয়োজনীয় প্যাকেজ ইনস্টল করতে হবে। আপনি NuGet Package Manager ব্যবহার করে অথবা dotnet CLI এর মাধ্যমে এটি ইনস্টল করতে পারেন।

NuGet প্যাকেজ ইনস্টল (NuGet Package Manager):

  • Microsoft.EntityFrameworkCore
  • Microsoft.EntityFrameworkCore.SqlServer (যদি আপনি SQL Server ব্যবহার করেন)
  • Microsoft.EntityFrameworkCore.Tools (মাইগ্রেশন টুলসের জন্য)

dotnet CLI ব্যবহার করে ইনস্টল:

dotnet add package Microsoft.EntityFrameworkCore
dotnet add package Microsoft.EntityFrameworkCore.SqlServer
dotnet add package Microsoft.EntityFrameworkCore.Tools

2. DbContext তৈরি করা

DbContext হলো EF Core এর মূল অংশ, যা ডেটাবেসের সাথে যোগাযোগ করে। আপনার DbContext ক্লাসের মধ্যে ডেটাবেসের টেবিলগুলির জন্য DbSet প্রপার্টি থাকতে হবে।

উদাহরণ:

using Microsoft.EntityFrameworkCore;

public class ApplicationDbContext : DbContext
{
    public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
        : base(options)
    {
    }

    public DbSet<User> Users { get; set; }  // একটি টেবিল হিসেবে 'Users'
}

এখানে User হলো একটি মডেল ক্লাস, যা ডাটাবেসের একটি টেবিলকে প্রতিনিধিত্ব করে।


3. প্রথম মাইগ্রেশন তৈরি করা

EF Core এর মাধ্যমে মাইগ্রেশন তৈরি করতে হলে আপনাকে dotnet ef টুল ব্যবহার করতে হবে। প্রথম মাইগ্রেশন তৈরির জন্য নিচের ধাপগুলি অনুসরণ করুন:

  1. ডাটাবেস কনফিগারেশন যোগ করা: আপনার Startup.cs ফাইলে, ConfigureServices মেথডে DbContext যোগ করুন:

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddDbContext<ApplicationDbContext>(options =>
            options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
    }
    
  2. প্রথম মাইগ্রেশন তৈরি করুন: নিচের কমান্ডটি ব্যবহার করুন:

    dotnet ef migrations add InitialCreate
    

    এখানে, InitialCreate হলো আপনার মাইগ্রেশনের নাম। আপনি এটি পরিবর্তন করতে পারেন, তবে সাধারণত এটি প্রথম মাইগ্রেশন হলে "InitialCreate" ব্যবহার করা হয়।


4. ডাটাবেস আপডেট করা

মাইগ্রেশন তৈরি হওয়ার পর, ডাটাবেস আপডেট করতে হবে যাতে আপনার ডাটাবেস স্কিমা মডেলের সাথে সামঞ্জস্যপূর্ণ হয়ে ওঠে। নিচের কমান্ডটি ব্যবহার করে ডাটাবেস আপডেট করুন:

dotnet ef database update

এটি মাইগ্রেশন ফাইল অনুযায়ী ডাটাবেস তৈরি বা আপডেট করবে।


5. মাইগ্রেশন ফাইলের বিস্তারিত

মাইগ্রেশন তৈরি হলে, একটি ফোল্ডার তৈরি হবে যার নাম হবে Migrations। এই ফোল্ডারে একটি .cs ফাইল থাকবে, যেখানে আপনার মডেল ক্লাসের পরিবর্তনগুলির জন্য কোড থাকবে। মাইগ্রেশন ফাইলটি ডাটাবেস স্কিমা পরিবর্তনের নির্দেশনা দেয়।

উদাহরণ:

public partial class InitialCreate : Migration
{
    protected override void Up(MigrationBuilder migrationBuilder)
    {
        migrationBuilder.CreateTable(
            name: "Users",
            columns: table => new
            {
                Id = table.Column<int>(nullable: false)
                    .Annotation("SqlServer:Identity", "1, 1"),
                Name = table.Column<string>(nullable: true),
                Email = table.Column<string>(nullable: true)
            },
            constraints: table =>
            {
                table.PrimaryKey("PK_Users", x => x.Id);
            });
    }

    protected override void Down(MigrationBuilder migrationBuilder)
    {
        migrationBuilder.DropTable(
            name: "Users");
    }
}

এখানে, Up মেথডে ডাটাবেস টেবিল তৈরি করা হয় এবং Down মেথডে টেবিল মুছে ফেলা হয় যদি আপনি মাইগ্রেশনটি রোলব্যাক করতে চান।


সারসংক্ষেপ

প্রথম মাইগ্রেশন তৈরি করার প্রক্রিয়া বেশ সহজ। আপনি DbContext তৈরি করার পর, মাইগ্রেশন কমান্ড ব্যবহার করে প্রথম মাইগ্রেশন তৈরি করতে পারেন এবং ডাটাবেস আপডেট করতে পারেন। মাইগ্রেশন ব্যবহারের মাধ্যমে, আপনার মডেল ক্লাসের কোনো পরিবর্তন সহজেই ডাটাবেসে প্রতিফলিত হয়, যা ডাটাবেস পরিচালনার কাজকে আরও সহজ এবং কার্যকরী করে তোলে।

common.content_added_by

মাইগ্রেশন আপডেট এবং রোলব্যাক করা

258
258

ASP.NET Core-এ Entity Framework Core (EF Core) ব্যবহার করে ডেটাবেস মডেল ম্যানেজ করার জন্য মাইগ্রেশন (Migration) একটি গুরুত্বপূর্ণ টুল। এটি ডেটাবেস স্কিমা এবং অ্যাপ্লিকেশনের মডেল ক্লাসের মধ্যে সামঞ্জস্য রাখতে সাহায্য করে। কখনো কখনো মাইগ্রেশন আপডেট করতে হয়, আবার প্রয়োজনে রোলব্যাক (Rollback) করাও দরকার হতে পারে।


মাইগ্রেশন আপডেট করা

মাইগ্রেশন আপডেট করার মাধ্যমে অ্যাপ্লিকেশনের মডেল ক্লাসে করা পরিবর্তনগুলো ডেটাবেসে প্রয়োগ করা হয়।

নতুন মাইগ্রেশন তৈরি করা

যদি মডেল ক্লাসে পরিবর্তন করা হয়, তবে প্রথমে একটি নতুন মাইগ্রেশন তৈরি করতে হবে।

dotnet ef migrations add MigrationName

উদাহরণ:

dotnet ef migrations add AddNewColumn

এই কমান্ডটি Migrations ফোল্ডারে একটি নতুন মাইগ্রেশন ফাইল তৈরি করবে, যেখানে ডেটাবেস স্কিমায় প্রয়োজনীয় পরিবর্তনের বিবরণ থাকবে।

ডেটাবেস আপডেট করা

নতুন মাইগ্রেশনটি ডেটাবেসে প্রয়োগ করার জন্য update কমান্ডটি ব্যবহার করতে হবে।

dotnet ef database update

উদাহরণ:
মডেল ক্লাসে একটি নতুন কলাম যোগ করার পর এটি ডেটাবেসে প্রয়োগ করতে উপরের কমান্ডটি ব্যবহার করা হবে।


মাইগ্রেশন রোলব্যাক করা

কোনো কারণে যদি মাইগ্রেশনে করা পরিবর্তন বাতিল করতে হয়, তবে রোলব্যাক করতে হবে।

পূর্ববর্তী মাইগ্রেশনে রোলব্যাক করা

ডেটাবেসকে একটি নির্দিষ্ট মাইগ্রেশন পর্যন্ত রোলব্যাক করার জন্য update কমান্ডে মাইগ্রেশনের নাম উল্লেখ করতে হবে।

dotnet ef database update MigrationName

উদাহরণ:
InitialCreate নামক মাইগ্রেশনে ফিরে যেতে হলে:

dotnet ef database update InitialCreate

সর্বশেষ মাইগ্রেশনটি রোলব্যাক করা

শেষ মাইগ্রেশনের পরিবর্তন বাতিল করতে মাইগ্রেশন ফাইলটি মুছে দিন এবং তারপর ডেটাবেসকে পূর্ববর্তী অবস্থায় আপডেট করুন।

dotnet ef database update PreviousMigrationName

উদাহরণ:
শেষ মাইগ্রেশনটি যদি AddNewColumn হয়, তবে এটি বাতিল করতে:

dotnet ef database update InitialCreate

ডেটাবেস পুরোপুরি রিসেট করা

যদি ডেটাবেস সম্পূর্ণ রিসেট করতে হয়, তবে নিচের ধাপগুলো অনুসরণ করুন:

  1. ডেটাবেস মুছে ফেলুন:

    dotnet ef database drop
    
  2. মাইগ্রেশন পুনরায় প্রয়োগ করুন:

    dotnet ef database update
    

মাইগ্রেশন হ্যান্ডলিং-এর কিছু গুরুত্বপূর্ণ বিষয়

  1. মাইগ্রেশনের ক্রমানুসার বজায় রাখা:
    মাইগ্রেশন তৈরি এবং আপডেটের সময় ক্রমানুসারে কাজ করুন। এলোমেলো মাইগ্রেশন ব্যবহার করলে স্কিমার সাথে সমস্যা হতে পারে।
  2. ব্যাকআপ রাখা:
    ডেটাবেসে বড় পরিবর্তন আনার আগে ব্যাকআপ রাখা জরুরি, বিশেষত প্রোডাকশন পরিবেশে।
  3. মাইগ্রেশনের লজিক চেক করা:
    মাইগ্রেশন ফাইলের Up এবং Down মেথডগুলো ভালোভাবে চেক করুন। নিশ্চিত করুন যে Down মেথডে সব পরিবর্তন সঠিকভাবে রোলব্যাক হচ্ছে।

সারাংশ

মাইগ্রেশন আপডেট এবং রোলব্যাক করার প্রক্রিয়া ডেটাবেস স্কিমা এবং মডেলের মধ্যে সঠিক সামঞ্জস্য নিশ্চিত করতে গুরুত্বপূর্ণ ভূমিকা পালন করে। মাইগ্রেশন সঠিকভাবে ব্যবহারের মাধ্যমে আপনি ডেটাবেস পরিবর্তন সহজে পরিচালনা করতে পারবেন এবং প্রোডাকশনে ত্রুটির ঝুঁকি কমাতে পারবেন।

common.content_added_by

ডেটা সিডিং (Seeding Data)

192
192

ডেটা সিডিং হলো একটি প্রক্রিয়া যেখানে প্রাথমিক ডেটা ডেটাবেসে স্বয়ংক্রিয়ভাবে ইনসার্ট করা হয়। সাধারণত এটি ডেভেলপমেন্ট বা টেস্টিং পরিবেশে ব্যবহৃত হয়, যেখানে ডেটাবেসে কিছু প্রাথমিক বা নমুনা (sample) ডেটা থাকতে হয়। ASP.NET Core-এ Entity Framework Core ব্যবহার করে ডেটা সিডিং খুবই সহজ। ডেটা সিডিংয়ের মাধ্যমে আপনি ডেটাবেসের টেবিলগুলোতে প্রাথমিক ডেটা প্রদান করতে পারেন।


ডেটা সিডিংয়ের প্রয়োজনীয়তা

  • ডেভেলপমেন্ট এবং টেস্টিং: ডেভেলপারদের জন্য ডেটাবেসে প্রাথমিক বা নমুনা ডেটা থাকতে পারে, যা কোড ডেভেলপমেন্ট বা টেস্টিংয়ের জন্য সহায়ক।
  • ইনিসিয়াল ডেটা ইনসার্ট করা: অ্যাপ্লিকেশন চলতে শুরু করার সময় কিছু প্রাথমিক ডেটা ডেটাবেসে যোগ করা।
  • ডেটাবেস মাইগ্রেশন: যখন আপনি ডেটাবেস মাইগ্রেশন চালান, তখন প্রাথমিক ডেটা সিডিং ব্যবহার করে ডেটাবেসে প্রয়োজনীয় ডেটা ইনসার্ট করা হয়।

Entity Framework Core-এ ডেটা সিডিং

ASP.NET Core-এ ডেটা সিডিং করার জন্য DbContext ক্লাসের মাধ্যমে ডেটাবেসে ডেটা ইনসার্ট করা হয়। সাধারণত, ডেটা সিডিং Seed পদ্ধতি দিয়ে করা হয়, যা ডেটাবেস মাইগ্রেশন চলাকালীন বা অ্যাপ্লিকেশন চালু হলে কল করা হয়।

1. DbContext-এ Seed Method তৈরি করা

প্রথমে, DbContext ক্লাসে OnModelCreating মেথডে প্রাথমিক ডেটা সিড করা হয়। এক্ষেত্রে আপনি HasData মেথড ব্যবহার করতে পারেন।

public class ApplicationDbContext : DbContext
{
    public DbSet<Product> Products { get; set; }

    public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
        : base(options)
    { }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        // Product টেবিলের জন্য প্রাথমিক ডেটা সিড করা
        modelBuilder.Entity<Product>().HasData(
            new Product { Id = 1, Name = "Laptop", Price = 1000 },
            new Product { Id = 2, Name = "Phone", Price = 500 }
        );
    }
}

এখানে, Products টেবিলের জন্য দুটি প্রাথমিক ডেটা সিড করা হয়েছে, যা ডেটাবেসে Product ক্লাসের ইনস্ট্যান্স হিসেবে ইনসার্ট হবে।

2. Migrations এবং Update Database

একবার ডেটা সিডিং প্রস্তুত হয়ে গেলে, আপনাকে মাইগ্রেশন তৈরি করতে হবে এবং ডেটাবেস আপডেট করতে হবে:

dotnet ef migrations add SeedDataMigration
dotnet ef database update

এখানে, SeedDataMigration হলো মাইগ্রেশনের নাম, যা নতুন ডেটাবেস স্কিমা এবং প্রাথমিক ডেটা ইনসার্ট করবে।

3. Manual Seed Method (অথবা Custom Seed Logic)

আপনি যদি আরও কাস্টম লজিক ব্যবহার করতে চান, যেমন শুধুমাত্র যখন ডেটাবেস খালি থাকে তখনই ডেটা সিড করা, তবে আপনি একটি Seed মেথড তৈরি করতে পারেন এবং এটি Startup.cs-এ কল করতে পারেন।

public static class SeedData
{
    public static void Initialize(IServiceProvider serviceProvider, ApplicationDbContext context)
    {
        // ডেটাবেস যদি খালি থাকে তবে সিড ডেটা যোগ করা
        if (!context.Products.Any())
        {
            context.Products.AddRange(
                new Product { Name = "Tablet", Price = 300 },
                new Product { Name = "Smartwatch", Price = 150 }
            );
            context.SaveChanges();
        }
    }
}

এখানে, যদি Products টেবিলটি খালি থাকে, তবে নতুন প্রোডাক্ট ডেটা ইনসার্ট করা হবে। এই Initialize মেথডটি Configure মেথডে কল করতে হবে।

4. Seed Method কে Configure তে কল করা

Startup.cs-এ Configure মেথডে এই SeedData.Initialize মেথডটি কল করতে হবে।

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    // ডেটা সিডিং করার জন্য
    SeedData.Initialize(app.ApplicationServices, new ApplicationDbContext());

    // অন্যান্য কনফিগারেশন
}

এটি নিশ্চিত করে যে, অ্যাপ্লিকেশন শুরু হওয়ার সময় ডেটাবেসে প্রাথমিক ডেটা সিড করা হবে।


ডেটা সিডিংয়ের বিকল্প

  1. User Secrets: ডেভেলপমেন্ট পরিবেশে প্রাথমিক ডেটা সিডিং করার সময় আপনি User Secrets ব্যবহার করতে পারেন যাতে আপনার সংবেদনশীল তথ্য সুরক্ষিত থাকে।
  2. SQL Scripts: কখনও কখনও আপনি SQL স্ক্রিপ্ট ব্যবহার করতে পারেন ডেটাবেসের জন্য প্রাথমিক ডেটা সিড করার জন্য, বিশেষত যদি আপনার অ্যাপ্লিকেশনটি বড় বা আরও কাস্টমাইজড ডেটাবেস কাঠামো ব্যবহার করে থাকে।

সারাংশ

ডেটা সিডিং হচ্ছে ডেটাবেসে প্রাথমিক বা নমুনা ডেটা ইনসার্ট করার একটি প্রক্রিয়া যা ডেভেলপমেন্ট বা টেস্টিং পরিবেশে অত্যন্ত গুরুত্বপূর্ণ। Entity Framework Core এর মাধ্যমে সহজেই OnModelCreating অথবা কাস্টম সিড মেথড ব্যবহার করে ডেটা সিড করা যায়। এই প্রক্রিয়া ডেটাবেস মাইগ্রেশন এবং আপডেটের সাথে সম্পর্কিত, এবং এটি অ্যাপ্লিকেশনের প্রথমবার চালু হওয়ার সময় প্রাথমিক ডেটা ইনসার্ট করতে সহায়তা করে।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion